blob: b06e8e5e39b857e702eec6bca8ca69a46679e814 [file] [log] [blame]
Howard Hinnantbc8d3f92010-05-11 19:42:161#!/bin/bash
2# //===--------------------------- testit ---------------------------------===//
3# //
4# // ÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊThe LLVM Compiler Infrastructure
5# //
6# // This file is distributed under the University of Illinois Open Source
7# // License. See LICENSE.TXT for details.
8# //
9# //===--------------------------------------------------------------------===//
10
11BACKUP="../"
12
13currentpath=`pwd`
14origpath=$currentpath
15currentdir=`basename $currentpath`
16while [ $currentdir != "test" ]; do
17if [ $currentdir == "/" ]
18then
19echo "current directory must be in or under \"test\"."
20exit 1
21fi
22cd ..
23currentpath=`pwd`
24currentdir=`basename $currentpath`
25BACKUP="../"$BACKUP
26done
27cd $origpath
28
29if [ -z $CC ]
30then
31CC=g++
32fi
33
34auto_header=0
35
36if [ -z $HEADER_INCLUDE ]
37then
38HEADER_INCLUDE=$BACKUP"include"
39let "auto_header+=1"
40fi
41
42auto_lib=0
43
44SOURCE_LIB=/usr/lib/libc++.dylib
45#SOURCE_LIB=/Users/hinnant/Development/libcpp/lib/libc++.a
46
47if [ -z $SOURCE_LIB ]
48then
49SOURCE_LIB=$BACKUP"lib/libc++.dylib"
50let "auto_lib+=1"
51fi
52
53if [ -z "$OPTIONS" ]
54then
55 OPTIONS="-nostdinc++ -nodefaultlibs /usr/lib/libSystem.B.dylib -arch `arch`"
56fi
57
58FAIL=0
59PASS=0
60UNIMPLEMENTED=0
61IMPLEMENTED_FAIL=0
62IMPLEMENTED_PASS=0
63
64function afunc
65{
66fail=0
67pass=0
68if (ls *.fail.cpp &> /dev/null)
69then
70for FILE in $(ls *.fail.cpp); do
71if $CC $OPTIONS -I$HEADER_INCLUDE $SOURCE_LIB $FILE &> /dev/null
72then
73rm ./a.out
74echo "$FILE should not compile"
75let "fail+=1"
76else
77let "pass+=1"
78fi
79done
80fi
81
82if (ls *.pass.cpp &> /dev/null)
83then
84for FILE in $(ls *.pass.cpp); do
85if $CC $OPTIONS -I$HEADER_INCLUDE $SOURCE_LIB $FILE
86then
87if ./a.out
88then
89rm ./a.out
90let "pass+=1"
91else
92echo "$FILE failed at run time"
93let "fail+=1"
94rm ./a.out
95fi
96else
97echo "$FILE failed to compile"
98let "fail+=1"
99fi
100done
101fi
102
103if [ $fail -gt 0 ]
104then
105echo "failed $fail tests in `pwd`"
106let "IMPLEMENTED_FAIL+=1"
107fi
108if [ $pass -gt 0 ]
109then
110echo "passed $pass tests in `pwd`"
111if [ $fail -eq 0 ]
112then
113let "IMPLEMENTED_PASS+=1"
114fi
115fi
116if [ $fail -eq 0 -a $pass -eq 0 ]
117then
118echo "not implemented: `pwd`"
119let "UNIMPLEMENTED+=1"
120fi
121
122let "FAIL+=$fail"
123let "PASS+=$pass"
124
125for FILE in *
126do
127if [ -d "$FILE" ];
128then
129cd $FILE
130if [ $auto_header -eq 1 ]
131then
132SAVE_HEADER_INCLUDE=$HEADER_INCLUDE
133HEADER_INCLUDE="../"$HEADER_INCLUDE
134fi
135if [ $auto_lib -eq 1 ]
136then
137SAVE_SOURCE_LIB=$SOURCE_LIB
138SOURCE_LIB="../"$SOURCE_LIB
139fi
140
141afunc
142
143if [ $auto_header -eq 1 ]
144then
145HEADER_INCLUDE=${HEADER_INCLUDE:3}
146fi
147if [ $auto_lib -eq 1 ]
148then
149SOURCE_LIB=${SOURCE_LIB:3}
150fi
151cd ..
152fi
153done
154}
155
156afunc
157
158echo "****************************************************"
159echo "Results for `pwd`:"
160echo "using `$CC --version`"
161echo "with $OPTIONS -I$HEADER_INCLUDE $SOURCE_LIB"
162echo "----------------------------------------------------"
163echo "sections without tests : $UNIMPLEMENTED"
164echo "sections with failures : $IMPLEMENTED_FAIL"
165echo "sections without failures: $IMPLEMENTED_PASS"
166echo " + ----"
167echo "total number of sections : $(($UNIMPLEMENTED+$IMPLEMENTED_FAIL+$IMPLEMENTED_PASS))"
168echo "----------------------------------------------------"
169echo "number of tests failed : $FAIL"
170echo "number of tests passed : $PASS"
171echo " + ----"
172echo "total number of tests : $(($FAIL+$PASS))"
173echo "****************************************************"
174
175exit $FAIL